/*
 * Allwinner SoCs display driver.
 *
 * Copyright (C) 2016 Allwinner.
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 */

/* ************************************************************************* */
/* File name   :	rtmx_eink.h */
/*  */
/* Description :	display engine 2.0 realtime mixer processing */
/*			base functions implement */
/*  */
/* History     :	2015/06/28  iptang  v0.1  Initial version */
/*  */
/* ************************************************************************* */

#ifndef __RTMX_EE_H__
#define __RTMX_EE_H__

#if 0
enum de_color_space {
	DE_BT601  = 0,
	DE_BT709  = 1,
	DE_YCC    = 2,
	DE_ENHANCE = 3,
	/* DE_VXYCC  = 3, */
};

enum de_pixel_format {
	DE_FORMAT_ARGB_8888                    = 0x00,/* MSB  A-R-G-B  LSB */
	DE_FORMAT_ABGR_8888                    = 0x01,
	DE_FORMAT_RGBA_8888                    = 0x02,
	DE_FORMAT_BGRA_8888                    = 0x03,
	DE_FORMAT_XRGB_8888                    = 0x04,
	DE_FORMAT_XBGR_8888                    = 0x05,
	DE_FORMAT_RGBX_8888                    = 0x06,
	DE_FORMAT_BGRX_8888                    = 0x07,
	DE_FORMAT_RGB_888                      = 0x08,
	DE_FORMAT_BGR_888                      = 0x09,
	DE_FORMAT_RGB_565                      = 0x0a,
	DE_FORMAT_BGR_565                      = 0x0b,
	DE_FORMAT_ARGB_4444                    = 0x0c,
	DE_FORMAT_ABGR_4444                    = 0x0d,
	DE_FORMAT_RGBA_4444                    = 0x0e,
	DE_FORMAT_BGRA_4444                    = 0x0f,
	DE_FORMAT_ARGB_1555                    = 0x10,
	DE_FORMAT_ABGR_1555                    = 0x11,
	DE_FORMAT_RGBA_5551                    = 0x12,
	DE_FORMAT_BGRA_5551                    = 0x13,

	/* SP: semi-planar, P:planar, I:interleaved
	 * UVUV: U in the LSBs;     VUVU: V in the LSBs
	 */
	DE_FORMAT_YUV444_I_AYUV         = 0x40,/* MSB  A-Y-U-V  LSB, reserved */
	DE_FORMAT_YUV444_I_VUYA                = 0x41,/* MSB  V-U-Y-A  LSB */
	DE_FORMAT_YUV422_I_YVYU                = 0x42,/* MSB  Y-V-Y-U  LSB */
	DE_FORMAT_YUV422_I_YUYV                = 0x43,/* MSB  Y-U-Y-V  LSB */
	DE_FORMAT_YUV422_I_UYVY                = 0x44,/* MSB  U-Y-V-Y  LSB */
	DE_FORMAT_YUV422_I_VYUY                = 0x45,/* MSB  V-Y-U-Y  LSB */
	DE_FORMAT_YUV444_P                     = 0x46,
			/* MSB  P3-2-1-0 LSB,  YYYY UUUU VVVV, reserved */
	DE_FORMAT_YUV422_P                     = 0x47,
			/* MSB  P3-2-1-0 LSB   YYYY UU   VV */
	DE_FORMAT_YUV420_P                     = 0x48,
			/* MSB  P3-2-1-0 LSB   YYYY U    V */
	DE_FORMAT_YUV411_P                     = 0x49,
			/* MSB  P3-2-1-0 LSB   YYYY U    V */
	DE_FORMAT_YUV422_SP_UVUV               = 0x4a,/* MSB  V-U-V-U  LSB */
	DE_FORMAT_YUV422_SP_VUVU               = 0x4b,/* MSB  U-V-U-V  LSB */
	DE_FORMAT_YUV420_SP_UVUV               = 0x4c,
	DE_FORMAT_YUV420_SP_VUVU               = 0x4d,
	DE_FORMAT_YUV411_SP_UVUV               = 0x4e,
	DE_FORMAT_YUV411_SP_VUVU               = 0x4f,
};

struct de_fb {
	unsigned int w;
	unsigned int h;
};

struct de_rect {
	int x;
	int y;
	unsigned int w;
	unsigned int h;
};

struct de_rect64 {
	long long x;
	long long y;
	unsigned long long w;
	unsigned long long h;
};
#endif

int rtmx_set_base(unsigned int reg_base);
void rt_mixer_init(int sel, unsigned int addr0, unsigned int addr1,
		unsigned int addr2, unsigned int w, unsigned int h,
		unsigned int outw, unsigned int outh, unsigned int fmt);
void rt_mixer_set_addr(int sel, unsigned int addr0);

#endif
